<?php
/**
 * fldcms
 * ============================================================================
 * 版权所有 2017 福建华晟网络科技，并保留所有权利。
 * 网站地址: http://www.fldcms.cn
 * ----------------------------------------------------------------------------
 * 这不是一个自由软件！您只能在不用于商业目的的前提下对程序代码进行修改和使用 .
 * 不允许对程序代码以任何形式任何目的的再发布。
 * ============================================================================
 * Author: fld
 * Date: 2017-07-01
 */
namespace app\common\model;
use think\Model;
use think\Db;
class BaseModel extends Model {
	/**
	 * 添加单条数据
	 * @param	string 			$table_name 	表名
	 * @param	array一维数组  	$data		  	数据
	 * @return 	int  			返回主键值
	 */
	public function add_table($table_name=null,$data=null,$add=1){
		if(isset($table_name) && !empty($table_name) && !empty($data)){
			if($add == 1){
				$data['add_time'] = time();
			}
			return Db::name($table_name)->insertGetId($data);
		}else{
			return 0;
		}

	}

	/**
	 * 添加多条数据
	 * @param	string 			$table_name		表名
	 * @param	array二维数组  	$data			数据
	 * @return  int  			返回添加成功的条数
	 */
	public function add_more_table($table_name=null,$data=null){
		if(isset($table_name) && !empty($table_name) && !empty($data)){
			foreach($data as $k=>$v){
				$data[$k]['add_time'] = time();
			}
			return Db::name($table_name)->insertAll($data);
		}else{
			return 0;
		}
	}

	/**
	 * @param	string 			$table_name			表名
	 * @param	array|string	$condition			条件
	 * @param 	array			$data				数据
	 * @param 	int				$update				更新情况：1、更新时间，0、不更新时间
	 * @return 	int|string		返回影响数据的条数
	 *
	 */
	public function update_table($table_name=null,$condition=null,$data=null,$update=1){
		if(isset($table_name) && !empty($table_name)){
			if($update == 1){
				$data['update_time'] = time();	
			}
			return Db::name($table_name)->where($condition)->update($data);
		}else{
			return 0;
		}
	}

	/**
	 * 删除数据
	 * @param	string 			$table_name		表名
	 * @param 	array|string	$condition		条件
	 * @return 	int				返回影响数据的条数
	 */
	public function delete_table($table_name=null,$condition=null){
		if(isset($table_name) && !empty($table_name) && !empty($condition)){
			return Db::name($table_name)->where($condition)->delete();
		}else{
			return 0;
		}
	}

	/**
	 * 查询单条数据
	 * @param	string 			$table_name
	 * @param 	array|string	$condition
	 * @param 	string			$field
	 * @return 	array			返回单条数据集
	 */
	public function find_table($table_name=null,$condition=null,$field='*'){
		if(isset($table_name) && !empty($table_name)){
			return Db::name($table_name)->field($field)->where($condition)->find();
		}else{
			return null;
		}
	}

	/**
	 * 查询某一字段值
	 * @param 	string 			$table_name		表名
	 * @param 	array|string 	$condition		条件
	 * @param 	string 			$column			字段名
	 * @return 	string			返回字段值
	 */
	public function find_column($table_name=null,$condition=null,$column=null){
		if(isset($table_name) && !empty($table_name) && !empty($condition) && !empty($column)){
			return Db::name($table_name)->where($condition)->value($column);
		}else{
			return null;
		}
	}

	/**
	 * 查询多条数据
	 * @param string 			$table_name		表名
	 * @param array|string	 	$condition		条件
	 * @param string 			$field			字段名
	 * @param string			$order			排序
	 * @param string			$page			分页
	 * @return array|null		返回多条数据集
	 */
	public function select_table($table_name=null,$condition=null,$field='*',$order=null){
		if(isset($table_name) && !empty($table_name)){
			if(empty($condition)){
				$condition = "1=1";
			}
			$result = Db::name($table_name)->field($field)->where($condition)->order($order)->select();
			return $result;
		}else{
			return null;
		}
	}
	/*
	 * 限制条数查询数据
	 * 通过条件查询表多条数据
	 * @param string $table_name
	 * @param array $condition
	 * @param string $field
	 * @param int $page
	 * @param int $pageCount
	 * @param string $order
	 */
	public function select_by_page($table_name=null,$condition=null,$field='*',$page=0,$pageCount=0,$order=NULL){
		if( isset($table_name) && !empty($table_name) ){
			if(empty($page)){
				$page = 1;
			}
			if(empty($pageCount) || $pageCount == 0){
				$pageCount = config("page_count");
			}
			$start = ($page-1)*$pageCount;
			if(empty($condition)){
				$condition = " 1 = 1 ";
			}
			$result = Db::name($table_name)->field($field)->where($condition)->order($order)->limit($start.",".$pageCount)->select();
			return $result;
		}else{
			return null;
		}
	}

	/**
	 * 分页查询多条数据
	 */
	public function select_table_by_page($table_name=null,$condition=null,$field="*",$order=null,$query=array()){
		if(isset($table_name) && !empty($table_name)){
			if(empty($condition)){
				$condition = "1=1";
			}
			$result = Db::name($table_name)->field($field)->where($condition)->order($order)->paginate(config('paginate')['list_rows'],false,['query'=>$query]);
			return $result;
		}else{
			return null;
		}
	}
	
	/**
	 * 关联多表查询
	 */
	public function join_table($table_name=null,$alias=null,$join=array(),$condition=null,$field="*",$order=null){
		if(isset($table_name) && !empty($table_name) && !empty($alias) && !empty($join)){
			if(empty($condition)){
				$condition = "1=1";
			}
			$result = Db::name($table_name)->alias($alias)->join($join)->field($field)->where($condition)->order($order)->select();
			return $result;
		}else{
			return null;
		}
	}
	
	/**
	 * 限制条数查询
	 */
	public function join_by_page($table_name=null,$alias=null,$join=array(),$condition=null,$field="*",$page=0,$pageCount=0,$order=null){
		if(isset($table_name) && !empty($table_name) && !empty($alias) && !empty($join)){
			if(empty($condition)){
				$condition = "1=1";
			}
			if(empty($page)){
				$page = 1;
			}
			if(empty($pageCount) || $pageCount == 0){
				$pageCount = config("page_count");
			}
			$start = ($page-1)*$pageCount;
			$result = Db::name($table_name)->alias($alias)->join($join)->field($field)->where($condition)->order($order)->limit($start.",".$pageCount)->select();
			return $result;
		}else{
			return null;
		}
	}
	
	/**
	 * 分页查询 多表关联查询
	 */
	public function join_table_by_page($table_name=null,$alias=null,$join=array(),$condition=null,$field="*",$order=null,$query=array()){
		if(isset($table_name) && !empty($table_name) && !empty($alias) && !empty($join)){
			if(empty($condition)){
				$condition = "1=1";
			}
			$result = Db::name($table_name)->alias($alias)->join($join)->field($field)->where($condition)->order($order)->paginate(config('paginate')['list_rows'],false,['query'=>$query]);
			return $result;
		}else{
			return null;
		}
	}
	

	/**
	 * @param 	string 			$table_name	表名
	 * @param 	array|string 	$condition	条件
	 * @return  int				统计数量
	 */
	public function count_table($table_name=null,$condition=null){
		if(isset($table_name) && !empty($table_name)){
			$count = Db::name($table_name)->where($condition)->count();
			return $count;
		}else{
			return 0;
		}
	}

	/**
	 * 执行查询语句
	 * @param 	string	$sql	查询语句
	 * @return 	array|false		返回查询结果数据集|false
	 */
	public function querySql($sql){
		return Db::query($sql);
	}

	/**
	 * 执行增删改语句
	 * @param 	string	$sql	查询语句
	 * @return  int				返回影响的记录数。
	 */
	public function executeSql($sql){
		return Db::execute($sql);
	}
}
